package com.tyam.dao;


import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;

import com.tyam.bean.Empresa;

public class EmpresaDAOHibernate implements EmpresaDAO {

	HibernateDAOFactory hibernateDAOFactory = null;
	HibernateDAO<Empresa> hibernateDAO = null;

	public EmpresaDAOHibernate() {
		hibernateDAOFactory = new HibernateDAOFactory();
		hibernateDAO = hibernateDAOFactory.getEmpresaDAO();
	}
	
	@Override
	public boolean inserir(Empresa empresa) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.add(empresa);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 
		return ok;
	}

	@Override
	public boolean alterar(Empresa empresa) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.update(empresa);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		}

		return ok;
	}

	@Override
	public boolean excluir(Empresa empresa) throws Exception {
		boolean ok = false;

		try {
			hibernateDAO.remove(empresa);
			ok = true;
		} catch (Exception e) {
			throw new Exception(e.getMessage());
		} 

		return ok;
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Empresa> getSelecionar(String nome) {
		
	    Criteria criteria = hibernateDAO.getSession().createCriteria(Empresa.class);
	    criteria.add(Restrictions.like("descricao",nome,MatchMode.ANYWHERE));
	    List<Empresa> lista = criteria.list();
	
		return lista;
	}	

	@Override
	public Empresa getEmpresa(int codigoEmpresa) {
		return hibernateDAO.get(codigoEmpresa);
	}

	@Override
	public List<Empresa> getListarTodos() {
		return hibernateDAO.listAll();
	}
	
	@Override
	public boolean isExiste(Empresa empresa) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean isExclusaoLiberada(Empresa empresa) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void inicialize(Empresa empresa) {
		if (empresa != null){
			Empresa emp = DAOFactory.getEmpresaDAO().getEmpresa(empresa.getCodigoEmpresa());
			emp.getUsuarios();
			empresa.setUsuarios(emp.getUsuarios());
		}
		
	}

}
